home *** CD-ROM | disk | FTP | other *** search
Text File | 1992-05-28 | 1.7 KB | 63 lines | [TEXT/ttxt] |
- \ drvr - parameter block for driver interface
- \ 02/04/85 cbd Version 1
- \ 1/31/87 rfl added kill:
- \ 8/16/90 rfl close: must call kill: first
- \ 5/28/92 rfl changed (fdos) to fcalls
- Decimal
-
- \ basic parameter block for drivers
- :CLASS PBDrvr <Super Object
-
- 12 Bytes Name \ driver name
- 12 Bytes Header \ fields for internal use
- Var IOComp \ i/o completion ptr
- Int IOResult \ return code
- Var IONamePtr \ name of drvr
- Int vRef \ 22
- Int IORefNum \ 24
- Int csCode \ 26
- Int csP1 \ 28
- Int csP2 \ 30
- Var IOBuffer
- Var IOReq
- Var IOAct
- Int IOPosMode
- Var IOOffset
-
- \ ( -- addr )
- :M FCB: addr: header ;M
-
- \ ( addr len -- ) name the driver
- :M NAME: ^base 50 erase addr: name >str255
- put: ioNamePtr ;M
-
- :M KILL: addr: header fcall killio,async 0 put: IOResult ;M
-
- \ ( -- fCode )
- :M OPEN: addr: header 0 (open) ;M
-
- \ ( -- fCode fCode )
- :M CLOSE: kill: self drop addr: header (close) ;M
-
- \ ( addr len -- fCode ) read n bytes via the driver
- :M READ: addr: header swap rot (read) ;M
-
- \ ( addr len -- fCode ) write n bytes via the driver
- :M WRITE: addr: header swap rot (write) ;M
-
- \ ( cfa:proc addr len -- fCode ) no-wait read requires a completion PROC
- :M READNW: put: IOReq +base put: IOBuffer >body +base put: IOComp
- addr: header fcall PBRead,ASYNC ;M
-
- \ ( cfa:proc addr len -- fCode ) no-wait write requires a completion PROC
- :M WRITENW: put: IOReq +base put: IOBuffer >body +base put: IOComp
- addr: header fcall PBWrite,ASYNC ;M
-
- \ ( -- #bytes ) return actual count of bytes read
- :M BYTESREAD: get: IOAct ;M
-
- \ ( -- IOResult ) leave the current IOResult value
- :M RESULT: get: IOResult ;M
-
- ;CLASS
-